home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 002 - AE ProDOS Time Utilities - Timemaster II H.O Version 3.5 Apple Pascal.dsk / TIME2.TEXT.txt < prev   
Text File  |  2019-02-16  |  4KB  |  230 lines

  1. (*$S+*)
  2. (* WRITTEN BY STEVEN MALECHEK FOR APPLIED ENGINEERING ON JAN 12, 1984. *)
  3. (* Copyright (C) 1984, 1986 by Applied Engineering *)
  4.  
  5. UNIT TIMEMASTERII; INTRINSIC CODE 26 DATA 27;
  6.  
  7.  
  8. INTERFACE
  9.   
  10.   
  11.   VAR
  12.     
  13.     TIME             : STRING[13];
  14.     
  15.     TODAY            : STRING[18];
  16.   
  17.   PROCEDURE GETCLOCK;
  18.   
  19.   FUNCTION  CLDAY    : INTEGER;
  20.   
  21.   FUNCTION  CLMONTH  : INTEGER;
  22.   
  23.   FUNCTION  CLDATE   : INTEGER;
  24.   
  25.   FUNCTION  CLYEAR   : INTEGER;
  26.   
  27.   FUNCTION  CLHOURS  : INTEGER;
  28.   
  29.   FUNCTION  CLMINUTES: INTEGER;
  30.   
  31.   FUNCTION  CLSECONDS: INTEGER;
  32.   
  33.   
  34.  
  35. IMPLEMENTATION
  36.     
  37.     
  38.   TYPE
  39.     BYTE = PACKED ARRAY [0..1] OF 0..255;
  40.     DIRTY= RECORD
  41.              CASE BOOLEAN OF
  42.                TRUE : (INT: INTEGER);
  43.                FALSE: (PTR: ^BYTE)
  44.              END;
  45.  
  46.   VAR
  47.     SLOT : INTEGER;
  48.     X    : INTEGER;
  49.   
  50.   
  51.   
  52.   FUNCTION READCLOCK(SELECT:INTEGER):INTEGER;
  53.   EXTERNAL;
  54.   
  55.   
  56.   
  57.   FUNCTION CLDAY;
  58.   
  59.     BEGIN
  60.       CLDAY:=READCLOCK(0)
  61.     END;
  62.     
  63.     
  64.   FUNCTION CLMONTH;
  65.   
  66.     BEGIN
  67.       CLMONTH:=READCLOCK(1)
  68.     END;
  69.   
  70.   
  71.   FUNCTION CLDATE;
  72.   
  73.     BEGIN
  74.       CLDATE:=READCLOCK(3)
  75.     END;
  76.     
  77.     
  78.   FUNCTION CLYEAR;
  79.     
  80.     BEGIN
  81.       CLYEAR:=READCLOCK(5)
  82.     END;
  83.     
  84.     
  85.   FUNCTION CLHOURS;
  86.   
  87.     BEGIN
  88.       CLHOURS:=READCLOCK(7)
  89.     END;
  90.     
  91.     
  92.   FUNCTION CLMINUTES;
  93.   
  94.     BEGIN
  95.       CLMINUTES:=READCLOCK(9)
  96.     END;
  97.     
  98.     
  99.   FUNCTION CLSECONDS;
  100.   
  101.     BEGIN
  102.       CLSECONDS:=READCLOCK(11)
  103.     END;
  104.     
  105.     
  106.   PROCEDURE GETCLOCK;
  107.   
  108.     VAR
  109.       THISDAY,THISMONTH:STRING[3];
  110.       DT,YR:STRING[2];
  111.       H,M,S,PART:STRING[2];
  112.       HR:INTEGER;
  113.     
  114.     
  115.     BEGIN
  116.       
  117.       CASE CLDAY OF 
  118.         0:THISDAY:='SUN';
  119.         1:THISDAY:='MON';
  120.         2:THISDAY:='TUE';
  121.         3:THISDAY:='WED';
  122.         4:THISDAY:='THU';
  123.         5:THISDAY:='FRI';
  124.         6:THISDAY:='SAT'
  125.       END;
  126.       
  127.       CASE CLMONTH OF
  128.          1:THISMONTH:='JAN';
  129.          2:THISMONTH:='FEB';
  130.          3:THISMONTH:='MAR';
  131.          4:THISMONTH:='APR';
  132.          5:THISMONTH:='MAY';
  133.          6:THISMONTH:='JUN';
  134.          7:THISMONTH:='JUL';
  135.          8:THISMONTH:='AUG';
  136.          9:THISMONTH:='SEP';
  137.         10:THISMONTH:='OCT';
  138.         11:THISMONTH:='NOV';
  139.         12:THISMONTH:='DEC';
  140.       END;
  141.       
  142.       STR(CLDATE,DT);
  143.       STR(CLYEAR,YR);
  144.       
  145.       IF LENGTH(YR) = 1 THEN 
  146.         YR:=CONCAT('0',YR);
  147.       
  148.       TODAY:=CONCAT(' ',THISDAY,' ',THISMONTH,' ',DT,', 19',YR,' ');
  149.     
  150.       HR:=CLHOURS;
  151.       
  152.       IF HR < 12 THEN
  153.         PART:='AM'
  154.       ELSE
  155.         PART:='PM';
  156.       
  157.       IF HR <= 12 THEN
  158.         IF HR = 0 THEN
  159.           BEGIN
  160.             HR:=12;
  161.             STR(HR,H)
  162.           END
  163.         ELSE
  164.           STR(HR,H)
  165.       ELSE
  166.           STR(HR-12,H);
  167.       
  168.       STR(CLMINUTES,M);
  169.       
  170.       IF LENGTH(M) = 1 THEN 
  171.         M:=CONCAT('0',M);
  172.       
  173.       STR(CLSECONDS,S);
  174.       
  175.       IF LENGTH(S) = 1 THEN 
  176.         S:=CONCAT('0',S);
  177.       
  178.       TIME:=CONCAT(' ',H,':',M,':',S,' ',PART,' ')
  179.     
  180.     END;
  181.       
  182.       
  183.     FUNCTION PEEK(ADDR:INTEGER):INTEGER;
  184.       
  185.       VAR
  186.         TRICK : DIRTY;
  187.     
  188.       BEGIN
  189.         TRICK.INT:=ADDR;
  190.         PEEK:=TRICK.PTR^[0]
  191.       END;
  192.   
  193.     
  194.       
  195.    BEGIN (* MAIN *)
  196.  
  197. (* THIS PART IS THE INITIALIZATION PART 
  198.    OF THE UNIT.  IT SEARCHES ALL OF THE
  199.    SLOTS FOR THE PRESENCE OF THE 
  200.    TIMEMASTER II CLOCK.  WHEN THE CLOCK
  201.    IS FOUND THE SLOT INFORMATION IS 
  202.    PASSED TO THE ASSEMBLY ROUTINE.  IF
  203.    THE CLOCK IS NOT IN THE COMPUTER
  204.    THEN THE CALLING PROGRAM WILL BE
  205.    TERMINATED.                          *)
  206.  
  207.      X:=PEEK(-12289);  (* CFFF STROBE *)
  208.      SLOT:=0;
  209.      
  210.      FOR X:=1 TO 7 DO
  211.        IF ((PEEK(-16350+X*256) = 248) AND (PEEK(-16348+X*256) = 104))
  212.           OR ((PEEK(-16384+X*256) = 8) AND (PEEK(-16383+X*256) = 120)
  213.           AND (PEEK(-16130+X*256) = 178))
  214.          THEN SLOT:=X*16;
  215.      
  216.      X:=PEEK(-12289);
  217.      
  218.      IF SLOT = 0 THEN 
  219.        BEGIN
  220.          PAGE(OUTPUT);
  221.          WRITELN('THE TIMEMASTER CLOCK IS NOT IN THE COMPUTER');
  222.          EXIT(PROGRAM)
  223.        END;
  224.      GETCLOCK; (* PRESET TIME AND TODAY STRINGS *)
  225.    
  226.    END.
  227.   
  228.  
  229.  
  230.